package org.zizi.action.service;

import org.zizi.action.ActionService;
import org.zizi.action.AddVatType;
import org.zizi.action.DeleteVatType;
import org.zizi.action.EditVatType;
import org.zizi.action.EnableVatType;
import org.zizi.action.UserException;
import org.zizi.dao.VatTypeDao;
import org.zizi.manager.Managers;
import org.zizi.manager.impl.DaoManager;
import org.zizi.modal.VatType;

public class VatTypeActionService implements ActionService
{
	private VatTypeDao dao = Managers.get(DaoManager.class).getDao(VatTypeDao.class);
	
	public void AddVatType(AddVatType action) throws Exception
	{
		VatType type = new VatType();
		type.setName(action.getName());
		type.setEnabled(true);
		
		dao.addOrUpdateVatType(type);
	}
	
	public void EditVatType(EditVatType action) throws Exception
	{
		VatType t = dao.getVatType(action.getId());
		if (t == null) return;
		
		t.setName(action.getName());
		t.setSepMaxMoney(action.getSepMaxMoney());
		t.setNorMaxMoney(action.getNorMaxMoney());
		dao.addOrUpdateVatType(t);
	}
	
	public void DeleteVatType(DeleteVatType action) throws Exception
	{
		int count = dao.getVatTypeRefrencedCount(action.getId());
		if (count > 0) throw new UserException("删除失败：此类型已被抵减清单引用" + count + "次。");
		
		dao.deleteVatType(action.getId());
	}
	
	public void EnableVatType(EnableVatType action) throws Exception
	{
		VatType t = dao.getVatType(action.getId());
		if (t == null) return;
		
		t.setEnabled(!t.isEnabled());
		dao.addOrUpdateVatType(t);
	}
}
